package usuario;

import java.security.MessageDigest;

import javax.swing.JOptionPane;

import persistencia.Persistencia;
import persistencia.dominio.Cliente;

/**
 * 
 * Ofrece metodos para tratar a los usuario como alta, baja y modificaciones.
 * 
 * @author Bettiol Nicolas
 * @author Rumie Vittar Pablo
 * @author Velez Matias
 * 
 * @version 1.0 --- 2011
 * 
 * 
 * 
 */
public class ControlCliente {

	/**
	 * 
	 * Metodo que guarda un usuario en la base de datos. Lo hace persistente.
	 * 
	 * @param datos
	 * @throws Exception
	 */
	public void guardarCliente(Object[] datos) throws Exception {
		String nombre = (String) datos[0];
		String apellido = (String) datos[1];
		String dni = (String) datos[2];
		
		Cliente u = new Cliente(nombre, apellido, Integer.parseInt(dni));

		Persistencia p = new Persistencia();
		try {
			p.guardarObjeto(u);
			p.cerrarTransaccion();
			JOptionPane.showMessageDialog(null,"Cliente Agregado exitosamente", "INFO",JOptionPane.INFORMATION_MESSAGE);
		} catch (Exception e) {
		
		} finally {
			p.realizaRollback();
			p.cerrarPersistencia();
		}
	}

	/**
	 * 
	 * Metodo que hace persistente un usuario luego de su modificacion.
	 * 
	 * @param datos
	 * @param exName
	 * @throws Exception
	 */
	public void guardarClienteMod(Object[] datos, String dni_viejo)throws Exception {
		String apellido = (String) datos[1];
		String nombre = (String) datos[0];
		String dni_aux = (String) datos[2];
		int dni = Integer.parseInt(dni_aux);
		Persistencia p = new Persistencia();
		try {
			Cliente c2 = (Cliente) p.getObjeto(Cliente.class, "dni == '"+ dni_viejo+ "'");
			c2.setApellido(apellido);
			c2.setNombre(nombre);
			c2.setDni(dni);

			p.cerrarTransaccion();
			JOptionPane.showMessageDialog(null,
					"Cliente Modificado exitosamente", "INFO",
					JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e) {
		} finally {
			p.realizaRollback();
			p.cerrarPersistencia();
		}
	}

	/**
	 * 
	 * Metodo para dar de baja a un usuario de la base de datos.
	 * 
	 * @param datos
	 * @throws Exception
	 */
	public void bajaCliente(Object[] datos) throws Exception {
		String dni = (String) datos[0];
		Persistencia p = new Persistencia();
		try {
			Cliente u2 = (Cliente) p.getObjeto(Cliente.class, "dni == '"
					+ dni + "'");
			p.borrarObjeto(u2);
			p.cerrarTransaccion();
			JOptionPane.showMessageDialog(null, "Cliente Eliminado con éxito",
					"INFO", JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e) {
		} finally {
			p.realizaRollback();
			p.cerrarPersistencia();
		}
	}



}
